const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); // 使用当前云环境

const db = cloud.database();
const _ = db.command;

exports.main = async (event, context) => {
    try {
        console.log('Received Event:', event);
        // 检查必要的字段是否存在
        if (!event.returnCode || !event.outTradeNo || !event.transactionId || !event.totalFee || !event.userInfo) {
            return { errcode: -1, errmsg: '缺少必要的参数' };
        }
        // 检查支付结果
        if (event.returnCode === 'SUCCESS') {
            // 查询 pay_order 集合
            const queryRes = await db.collection('pay_order').where({ out_trade_no: event.outTradeNo }).get();
            if (queryRes.data.length > 0) {
                const payOrder = queryRes.data[0];

                // 查询 order 集合
                const orderRes = await db.collection('order').doc(payOrder.order_id).get();
                if (!orderRes.data) {
                    return { errcode: -1, errmsg: '订单不存在' };
                }

                // 更新 pay_order 状态
                await db.collection('pay_order').where({
                    out_trade_no: event.outTradeNo
                }).update({
                    data: {
                        status: 1,
                        transaction_id: event.transactionId,
                        total_fee: parseInt(event.totalFee),
                    }
                });

                // 增加用户剩余次数
                await db.collection('user').where({ open_id: event.userInfo.openId }).update({
                    data: {
                        integral: _.inc(parseInt(orderRes.data.integral))
                    }
                });

                return { errcode: 0, errmsg: '' };
            } else {
                return { errcode: -1, errmsg: '支付订单不存在' };
            }
        } else {
            // 支付失败或异常情况
            return { errcode: -1, errmsg: '支付失败' };
        }
    } catch (error) {
        console.error('Error processing payment callback:', error);
        return { errcode: -1, errmsg: '系统错误' };
    }
};



